package io.itit.ecp.admin.provide.action.req;

import io.itit.grass.common.provide.action.validation.IAdd;
import io.itit.grass.common.provide.action.validation.IEnable;
import io.itit.grass.common.provide.action.validation.IOther;
import io.itit.grass.common.provide.action.validation.IUpdate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.*;
import java.io.Serializable;

/**
 * <p>
 *
 * @Author：Roy
 * @Description：计量设备管理参数
 * @Date：Create by 2023-11-30 18:51:39
 */
@Data
@ToString
@ApiModel("计量设备管理参数")
public class MeterDeviceReq implements Serializable {

    private static final long serialVersionUID = 1L;

    @Null(groups = IAdd.class)
    @NotBlank(groups = {IUpdate.class, IEnable.class})
    @ApiModelProperty("主键")
    private String id;

    @NotBlank
    @ApiModelProperty("设备编码")
    private String deviceCode;

    @NotBlank
    @ApiModelProperty("设备名称")
    private String deviceName;

    @NotBlank
    @ApiModelProperty("设备类型(1:物联网设备,2:非物联网设备) >> distCode：ecp-admin.meterDevice.deviceType")
    private String deviceType;

    @NotBlank
    @ApiModelProperty("当前状态(1:在线,2:离线) >> distCode：ecp-admin.meterDevice.deviceStatus")
    private String deviceStatus;

    @NotBlank
    @ApiModelProperty("计量类型(1:电表,2:水表,3:冷表) >> distCode：ecp-admin.meterDevice.meterType")
    private String meterType;

    @ApiModelProperty("项目id")
    private String sceneProjectId;

    @NotBlank(groups = IOther.class)
    @ApiModelProperty("楼栋id")
    private String sceneEdificeId;

    @ApiModelProperty("楼层id")
    private String sceneFloorId;

    @ApiModelProperty("空间id")
    private String sceneRoomId;

    @ApiModelProperty("读表类型(11:光伏电表,12:储能电表,13:用电电表,21:用水水表,22:消防水表,31:用冷冷表) >> distCode：ecp-admin.meterDevice.readMeterType")
    private String readMeterType;

    @ApiModelProperty("能源类型id")
    private String energyTypeId;

    @ApiModelProperty("产品类型")
    private String productTypeId;

    /**
     * 是否重点关注设备(1:重点关注设备,2:非重点关注设备)
     */
    @ApiModelProperty("是否重点关注设备(1:重点关注设备,2:非重点关注设备)")
    private String isFocus;

    @NotBlank
    @ApiModelProperty("读表标识(1:总表,2:分表) >> distCode：ecp-admin.meterDevice.readMeterTag")
    private String readMeterTag;

    @ApiModelProperty("用途")
    private String purpose;

    @NotBlank(groups = IEnable.class)
    @ApiModelProperty("启用状态(1:启用,2:禁用) >> distCode：ecp-admin.meterDevice.status")
    private String status;

    @ApiModelProperty("设备id")
    private String deviceId;

    @ApiModelProperty("关联参数id")
    private String modelId;

    /**
     * 统计类型
     */
    private String staticsType;

    @NotBlank
    @ApiModelProperty("删除标识(1:未删除,2:已删除) >> distCode：ecp-admin.meterDevice.delFlag")
    private String delFlag;

    @NotBlank
    @ApiModelProperty("机构Id")
    private String deptId;

}
